Excel - Módulo de Funções Utilitárias 2
converte a coluna de número para letra
Function ConverterParaLetra(icol As Long) As String
Dim a As Long
Dim b As Long
a = icol
ConverterParaLetra = ""
Do While icol > 0
a = Int((icol - 1) / 26)
b = (icol - 1) Mod 26
ConverterParaLetra = Chr(b + 65) & ConverterParaLetra
icol = a
Loop
End Function
atribui uma fórmula a célula corrente
Public Sub ColocaFormulaCelulaAtual(Formula As String)
ActiveCell.Formula = Formula '"=A1+B2"
End Sub
Seleciona uma célula ou conjunto de células
conjunto pode ser uma só celula (Ex: "B9" ) ou um conjunto de células("A1:Z20")
Public Sub SelecionaConjuntoCelulas(conjunto As String)
range(conjunto).Select
End Sub
retorna o valor da célula que está selecionada
Public Function RetornaValorCelulaCorrente() As Variant
RetornaValorCelulaCorrente = ActiveCell.Value
End Function
atribui o valor a célula selecionada
Public Sub DefineValorCelulaCorrente(valor As Variant)
ActiveCell.Value = valor
'Workbooks("Custo.Xls").Sheets("Folha1").Range("A1").Value = 5
End Sub
Faz com que a célula atual fique com o conteúdo centralizado
Public Sub CelulaCorrenteCentralizarTexto()
Selection.HorizontalAlignment = xlCenter
End Sub
Public Sub SelecionarCelula(Celula As String)
SelecionaConjuntoCelulas (Celula)
End Sub
Public Sub ColocaValorCelulaCorrente(valor As Variant)
ActiveCell.Value = valor
End Sub
faz com que o texto na célula corrente fique em negrito
Public Sub CelulaCorrenteFazTextoBold()
Selection.Font.Bold = True
End Sub
faz com que o texto na célula corrente fique em itálico
Public Sub CelulaCorrenteFazItalico()
Selection.Font.Italic = True
End Sub
faz com que o texto na célula corrente fique sublinhado
Public Sub SublinhaCelulaCorrente()
Selection.Font.Underline = xlUnderlineStyleSingle
End Sub
Alinha a seleção atual à direita - à esqueda (left) é o default (texto)
Public Sub CelulaCorrenteTextoDireita()
Selection.HorizontalAlignment = xlRight
End Sub
Define o tipo de letra da célula corrente
Public Sub DefineFonteLetraCelulaCorrente()
Selection.Font.Name = "AGaramond"
End Sub
elimina uma linha inteira da planilha
Public Sub EliminaLinha(NomePlanilha As String, linha As String)
Sheets(NomePlanilha).Select
range(linha).EntireRow.Select
Selection.EntireRow.Delete
End Sub
procura a partir da linha 1 até encontrar a primeira coluna em branco
Nota : ao encontrar a 1a linha em branco ele varre + 40 linhas depois para ver
se continua em branco e se achou conteúdo continua a procura
Public Function PegaUltimaLinhaPlanilha(Planilha As String, col As String) As Integer
Dim a As Integer
Dim b As Variant
Dim c As Integer
Dim d As Integer
Dim e As Integer
c = ConverterParaNúmero(col)
a = 1 'linha
Sheets(Planilha).Select
b = Cells(a, c).Value 'linha,coluna c=col , a-lin
continua:
While b <> ""
a = a + 1
b = Cells(a, c).Value 'linha,coluna c=col, a=lin
Wend
'proteção linha em branco - 40 linhas em branco
d = 0
e = a
While d < 40
e = e + 1
b = Cells(e, c).Value 'linha,coluna c=col, a=lin
If b <> "" Then
a = e
GoTo continua
End If
d = d + 1
Wend
PegaUltimaLinhaPlanilha = a - 1
End Function
converte a coluna de string para número
Public Function ConverterParaNúmero(coluna As String) As Integer
Dim a As Integer
Dim b As Integer
Dim peso As Integer
Dim res As Integer
peso = 0
res = 0
For b = Len(coluna) To 1 Step -1
a = Asc(Mid(coluna, b, 1))
a = a - Asc("A") + 1 * (26 ^ peso) 'Coluna AA = Coluna 27
res = res + a
peso = peso + 1
Next
ConverterParaNúmero = res
End Function
copia o valor da célula corrente para o clipboard
Public Sub CopiaCelulaCorrente()
ActiveCell.Copy
End Sub
Copia uma linha inteira de uma planilha para a outra
Nota: a linha é um string que contém números apenas
Public Sub CopiarLinhaInteira(planOrigem As String, linhaOrigem As String, planDestino As String, linhaDestino As String)
Sheets(planOrigem).Select
a = converte
Rows(linhaOrigem).Select
ActiveCell.EntireRow.Copy
Sheets(planDestino).Select
Rows(linhaDestino).Select
ActiveCell.EntireRow.Insert
End Sub
elimina a linha inteira onde se encontra a seleção atual
Public Sub EliminarLinhaInteiraCorrente()
Selection.EntireRow.Delete
End Sub
Copia uma coluna inteira da Planilha Origem para a Planilha destino
Nota: Assume que a primeira linha com dados da coluna seja a segunda. A primeira é o header/cabeçalho da coluna
Public Sub CopiarColuna(planOrigem As String, ColOrigem As String, planDestino As String, colDestino As String)
Dim a As Integer 'linha origem
Dim b As Integer 'linha destino
Dim c As Integer 'cont lin
Dim d As Integer 'col origem
Dim e As Integer 'col destino
Dim f As Variant 'dado
a = NumLinPedPendPag 'PegaUltimaLinhaPlanilha(planOrigem, ColOrigem)
If planDestino = "PedidosPendPgto" Then
b = NumLinPedPendPag + 1 'PegaUltimaLinhaPlanilha(PlanDestino, ColDestino) + 1
End If
d = ConverterParaNúmero(ColOrigem)
e = ConverterParaNúmero(colDestino)
Application.ScreenUpdating = False
c = 2 'linha 1 tem os headers
While c <= a
Sheets(planOrigem).Select
f = Cells(c, d).Value 'linha,coluna
Sheets(planDestino).Select
Cells(b, e) = f 'linha, coluna
c = c + 1
b = b + 1
Wend
Application.ScreenUpdating = True
End Sub
Copia as células correntes para o clipboard
Public Sub CopiaRangeCelulasSelecionadas()
Selection.Copy
End Sub
Recorta as células selecionadas (transfere o conteúdo delas para o clipboard)
Public Sub CortaRangeCelulasSelecionadas()
Selection.Cut
End Sub
ordena as células selecionadas por ordem crescente
Public Sub OrdenarSelecaoAscendente()
Selection.Sort Key1:=range("A1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
ordena as células selecionadas por ordem decrescente
Public Sub OrdenarSelecaoDescendente()
Selection.Sort Key1:=range("A1"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
procura por um texto dentro da planilha
Public Sub Buscar(valor As String)
Cells.Find(What:=valor, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate
End Sub
insere conteúdo do clipboard na linha corrente
Public Sub InserirLinhaInteiraLinhaCorrente()
Selection.EntireRow.Insert
End Sub
Public Sub ColocaValorRangeCelulasSelecionadas(valor As Variant)
For Each Celula In Selection
Celula.valor = valor
Next célula
End Sub
Elimina tudo da planilha - mas não retira cor de fundo da célula
Public Sub LimparPlanilha(nome As String)
Sheets(nome).Select
Sheets(nome).Cells.ClearContents
MsgBox ("Planilha " & nome & " limpa com sucesso")
End Sub
limpa tudo da planilha, até cor de fundo da célula
Public Sub LimparPlanilha1(nome As String)
Sheets(nome).Select
Cells.Clear
End Sub
esta rotina transfere tudo de um recordset (dados trazidos do SQL) para uma planilha
'Podemos definir para onde deverá ser transferido: Qual planilha, a partir de que linha e coluna deverá começar
' a transferência
Public Sub TransfereRecordSetParaPlanilha(NomePlanilha As String, colunaPlanilha As String, LinhaPlanilha As String, Dados As adodb.Recordset)
Dim linhas As Integer
Dim colunas As Integer
Dim icol As Integer
Dim ilin As Integer
On Error GoTo saida1
Sheets(NomePlanilha).Select
icol = ConverterParaNúmero(colunaPlanilha)
ilin = CInt(LinhaPlanilha)
'transferindo os campos de cabeçalho
For colunas = 1 To Dados.Fields.Count
Cells(ilin, icol).Value = Dados.Fields(icol - 1).Name 'linha, coluna
Cells(ilin, icol).Interior.ColorIndex = 37
icol = icol + 1
Next
ilin = ilin + 1
'copiando os valores
icol = ConverterParaNúmero(colunaPlanilha)
While Not Dados.EOF
For colunas = 1 To Dados.Fields.Count
Cells(ilin, icol).Value = Dados.Fields(icol - 1).Value 'linha, coluna
icol = icol + 1
Next
icol = ConverterParaNúmero(colunaPlanilha)
ilin = ilin + 1
Dados.MoveNext
Wend
Exit Sub
saida1:
MsgBox ("Erro:" + Err.Description)
End Sub
Desligando a atualização da Planilha
Public Sub InibirAtualizacaoTela()
Application.ScreenUpdating = False
End Sub
Ligando a atualização da Planilha
Public Sub HabilitarAtualizacaoTela()
Application.ScreenUpdating = True
End Sub
Retorna a pasta do disco que a planilha se encontra
Public Function RetornaPastaPlanilha() As String
RetornaPastaPlanilha = ThisWorkbook.Path
End Function
Salva e fecha a planilha
Public Sub SalvarEFecharPlanilha()
ThisWorkbook.Saved = True
ThisWorkbook.Close
End Sub
Ativar a planilha, dar o foco - Nota: Planilha é numérico..1,2,3
Public Function AtivarPlanilha(Planilha As String)
Workbooks(Planilha).Activate
End Function
Imprimir a planilha
Public Sub ImprimirPlanilha()
'Workbooks(1).PrintOut (From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate)
End Sub
Esta função procura por um string em uma coluna da planilha e sempre que encontrar ela vai eliminar a linha
inteira .
Public Sub EliminarLinhaPlanilha(NomePlanilha As String, coluna As String, dado As String)
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim col As String
Dim lin As String
Sheets(NomePlanilha).Select
a = PegaUltimaLinhaPlanilha(NomePlanilha, coluna)
c = ConverterParaNúmero(coluna)
For b = 1 To a
If Cells(b, c).Value = dado Then 'linha, coluna
lin = "A" + CStr(b)
EliminaLinha NomePlanilha, lin
b = b - 1
End If
Next
End Sub
seleciona a planilha para ser utilizada
Public Sub SelecionarPlanilha(NomePlanilha As String)
Sheets(NomePlanilha).Select
End Sub
retorna o nome da planilha selecionada neste momento
Public Function RetornaNomePlanilhaCorrente() As String
RetornaNomePlanilhaCorrente = ActiveSheet.Name
End Function
fechando a planilha
Public Function FechandoPastaCorrente()
ThisWorkbook.Close
End Function
exibe uma planilha
Public Sub ExibePlanilha(NomePlanilha As String)
Sheets(NomePlanilha).Visible = True
End Sub
ocultando a planilha
Public Sub EscondePlanilha(NomePlanilha As String)
Sheets(NomePlanilha).Visible = False
End Sub
abre uma planilha externa
Public Sub AbreArquivoExcelExterno(NomeArquivoXLS As String)
'Workbooks.Open Filename:="C:\Meus documentos\video safe 3.xls"
Workbooks.Open Filename:=NomeArquivoXLS
End Sub
abre uma planilha externa com senha
Public Sub AbreArquivoExcelExternoComSenha(NomeArquivoXLS As String, Senha As String)
'ActiveWorkbook.SaveAs Filename:="C:\Meus documentos\piscis.xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.SaveAs Filename:=NomeArquivoXLS, FileFormat:=xlNormal, Password:=Senha, WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
Recalcular a planilha inteira
Public Sub RecalcularTodaPlanilha()
ActiveSheet.Calculate
End Sub
Desligar alertas
Public Sub DesligarAlertas()
Application.DisplayAlerts = False
End Sub
Ligar Alertas
Public Sub LigarAlertas()
Application.DisplayAlerts = True
End Sub
Não Exibir a planilha em tela cheia
minimiza ou reduz dependendo estado anterior
Public Sub ExibeExcelTelaNaoCheia()
Application.DisplayFullScreen = False
End Sub
Exibir a planilha em tela cheia
Public Sub ExibeExcelTelaCheia()
Application.DisplayFullScreen = True
End Sub
Desabilita animações
Public Sub DesabilitarAnimacoes()
Application.EnableAnimations = False
End Sub
Habilita animações
Public Sub HabilitarAnimacoes()
Application.EnableAnimations = True
End Sub
Desabilita Auto-Complete
Public Sub DesabilitaAutoComplete()
Application.EnableAutoComplete = False
End Sub
Habilita auto-complete
Public Sub HabilitaAutoComplete()
Application.EnableAutoComplete = True
End Sub
Desabilita sons
Public Sub DesabilitaSons()
Application.EnableSound = False
End Sub
Habilita sons
Public Sub HabilitaSons()
Application.EnableSound = True
End Sub
Associar uma tecla a um evento
para desabilitar faça Application.OnKey "^a", " " para reativar atalho : Application.OnKey "^a"
Public Sub AssociarTeclaAUmProcedimento(tecla As String, procedimento As String)
Application.OnKey tecla, procedimento
End Sub
Inibe atualiza~ção da tela
Public Sub InibirAtualizacaoTela()
Application.ScreenUpdating = False
End Sub
Habilita atualização da tela
Public Sub HabilitarAtualizacaoTela()
Application.ScreenUpdating = True
End Sub
Exibe PopUp
exibe uma mensagem de alerta para o usuário
Public Sub ExibePopup(Mensagem As String)
MsgBox (Mensagem)
End Sub
Pergunta ao usuário
Public Function PerguntaAoUsuario(Mensagem As String) As String
Dim a As String
a = InputBox(Mensagem)
PerguntaAoUsuario = a
End Function
retorna a pasta do windows que a planilha está
Public Function RetornaPastaCorrente() As String
RetornaPastaCorrente = ActiveWorkbook.Name
End Function
sair do modo programação
Public Sub TerminarExcel()
Application.Quit
End Sub
Cola o conteúdo do clipboard na célula corrente de maneira personalizada
Public Sub PasteEspecial()
ActiveCell.PasteSpecial Paste:=xlValues, operation:=xlNone, skipBlanks:=False, Transpose:=False
End Sub
Retorna a fórmula contida na célula
Public Function RetornaFormulaCelulaCorrente() As Variant
RetornaFormulaCelulaCorrente = ActiveCell.Formula
End Function
devolve true se a variável for vazia
Public Function TestaVazio(dado As Variant) As Boolean
TestaVazio = IsEmpty(dado)
End Function
devolve true se o dado for numérico
Public Function TestaNumérico(dado As Variant) As Boolean
TestaVazio = IsNumeric(dado)
End Function
Solicitando o recálculo manual da planilha
Public Sub FazendoRecalculoManual()
Application.Calculation.xlManual
End Sub
Solicitando recálculo automatico da planilha
Public Sub FazendoRecalculoAutomatico()
Application.Calculation.xlAutomatic
End Sub
Dar foco a uma planilha
Public Sub DeslocarVisualização(range As String)
ActiveSheet.ScrollArea = range '"A1: D20"
End Sub